bitkeeper revision 1.64 (3e50e515H574gxTCkK8Frnaoka-RTA)
authorsmh22@boulderdash.cl.cam.ac.uk <smh22@boulderdash.cl.cam.ac.uk>
Mon, 17 Feb 2003 13:35:17 +0000 (13:35 +0000)
committersmh22@boulderdash.cl.cam.ac.uk <smh22@boulderdash.cl.cam.ac.uk>
Mon, 17 Feb 2003 13:35:17 +0000 (13:35 +0000)
fix horrendous complicated bug IAP couldn't.

BitKeeper/etc/ignore
xen-2.4.16/drivers/block/xen_block.c
xen-2.4.16/drivers/ide/ide-dma.c
xen-2.4.16/include/asm-i386/pci.h

index 47b60ce0af2b14b63a9cb3f49dc5c44b0281af77..0b34c3a5287430481d3e06d9ab832cd1ad3e0bb1 100644 (file)
@@ -20,3 +20,5 @@ xenolinux-2.4.16-sparse/arch/xeno/drivers/block/Makefile.orig
 xenolinux-2.4.16-sparse/arch/xeno/drivers/block/block.c.orig
 xenolinux-2.4.16-sparse/scripts/kconfig.tk
 xen-2.4.16/foo
+xen-2.4.16/common/domain.c.smh
+URK
index c61597e3d89c676f08eb3cf7c653a2a8ddc1def1..449eefe6a7fb61f8475c2ff128a9be70adc40e5a 100644 (file)
@@ -297,6 +297,10 @@ int dispatch_rw_block_io (int index)
        BUG();
     }
     
+    if(blk_ring->btx_ring[index].buffer == NULL) { 
+       printk(KERN_ALERT "xen_block: bogus buffer from guestOS\n"); 
+       BUG();
+    }
 
     if (XEN_BLK_DEBUG) {
        printk(XEN_BLK_DEBUG_LEVEL "    btx_cons: %d  btx_prod %d  index: %d "
index 4112e98850ee1c6df01b2ff9036c4032cceefdc7..6ce5fd4b1f6361f965490b07b640056d1d59489a 100644 (file)
@@ -290,8 +290,14 @@ static int ide_build_sglist (ide_hwif_t *hwif, struct request *rq)
                        sge->page = bh->b_page;
                        sge->offset = bh_offset(bh);
                } else {
+
+                  
+#if 0 
+                   /* below is wrong for xen since b_data is actually
+                      a 'physical / virtual' thingy. Ask KAF. */
                        if (((unsigned long) bh->b_data) < PAGE_SIZE)
                                BUG();
+#endif
 
                        sge->address = bh->b_data;
                }
index 474cc9591ae1d82e2fc9939db3f4072804c7aac2..1ffade8914be1fb98cb9c15ca0f30e671c17bb4b 100644 (file)
@@ -151,8 +151,12 @@ static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
        for (i = 0; i < nents; i++ ) {
                if (sg[i].address && sg[i].page)
                        out_of_line_bug();
+
+               /* not worth checking since NULL is ok says SMH */
+#if 0
                else if (!sg[i].address && !sg[i].page)
                        out_of_line_bug();
+#endif
  
                if (sg[i].address)
                        sg[i].dma_address = virt_to_bus(sg[i].address);